home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Bootlegger Magazine (1983)(Bootleg).zip / Bootlegger Magazine (1983)(Bootleg).do / CRACKING-PART 5.txt < prev    next >
Text File  |  1996-12-24  |  8KB  |  261 lines

  1. 5
  2.  
  3. 
  4.  
  5. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
  6.  
  7.  
  8.  
  9.  
  10.          KRAKING SHEILA
  11. THE PURPOSE OF THIS ESSAY IS NOT TO PRO
  12. VIDE YOU WITH A COOKBOOK FOR
  13. CRACKING SHEILA.  RATHER, I AM GOING TO
  14.  DESCRIBE THE GENERAL APPROACH
  15. I TOOK, IN THE HOPE THAT IT WILL BE OF 
  16. USE TO YOU IN CRACKING
  17.  SIMILAR PROGRAMS.
  18.  
  19. STEP 1: CASE THE JOINT!
  20.      THE FIRST STEP OF CRACKING ANY PRO
  21. GRAM IS TO GET AN IDEA OF THE
  22. NATURE OF THE PROTECTION.  DOES THE PRO
  23. GRAM ACCESS THE DISK?  IF SO,
  24. ARE THE DISK ACCESSES NECESSARY TO THE 
  25. PROGRAMS FUNCTION, PART OF THE
  26. PROTECTION, OR BOTH?  DOES THE PROGRAM 
  27. USE A CUSTOM ROUTINE TO READ
  28. THE DISK, OR A MODIFIED VERSION OF THE 
  29. STANDARD DOS?  IF THE LATTER,
  30. WHAT SORT OF MODIFICATIONS HAVE BEEN MA
  31. DE?
  32.      SHEILA IS AN ARCADE-STYLE ADVENTUR
  33. E.  THERE ARE 5 MAZES, AND THE
  34. DISK IS ACCESSED EACH TIME YOU ENTER A 
  35. NEW MAZE AND FOR A HI-RES CAS-
  36. TLE AT THE BEGINNING). IF YOU OPEN THE 
  37. DRIVE DOOR WHILE IT'S TRYING
  38. TO LOAD A MAZE, IT RECALIBRATES AND TRI
  39. ES AGAIN; THIS SUGGESTED TO ME
  40. A FAIRLY NORMAL RWTS, SINCE MANY CUSTOM
  41.  ROUTINES DON'T BOTHER WITH
  42. THIS.THE BOOT WAS MANIFESTLY ABNORMAL, 
  43. WITH MUCH HEAD MOVEMENT AND 3 RE
  44. -CALIBRATIONS.  FURTHERMORE, THE DISK W
  45. OULD NOT BOOT UNLESS WRITE
  46. ENABLED. SUCH A BOOT OFFERS MUCH OPPORT
  47. UNITY FOR CHICANERY, SO I
  48. RESOLVED TO USE BOOT TRACING ONLY AS A 
  49. LAST RESORT. NIBBLE COPIES
  50. WOULD NOT BOOT, BUT I FOUND THAT I COUL
  51. D SWITCH TO A COPY ONCE THE
  52. PROGRAM WAS GOING, INDICATING THAT THE 
  53. MAJOR PROTECTION WAS IN THE
  54. BOOT. EXAMINING A NIBBLE DUMP OF THE DI
  55. SK (USING THE INSPECTOR), I
  56. CONCLUDED THAT MOST TRACKS WERE NEARLY 
  57. NORMAL 3.2, BUT WITH A
  58. MODIFIED SECTOR HEADER.
  59.  
  60. STEP 2:GET IT OUT OF MEMORY.
  61.      HAVING FIGURED OUT AS MUCH AS I CO
  62. ULD FROM 'OUTSIDE', I DECIDED
  63. THAT IT WAS TIME TO GET A LOOK INSIDE T
  64. HE PROGRAM. THE TRICK IN
  65. GETTING A PROGRAM OUT OF MEMORY IS TO P
  66. RESERVE $0.7FF, MUCH OF WHICH
  67. IS MODIFIED BY A STANDARD RESET. AS YOU
  68.  PROBABLY KNOW THIS CAN BE
  69. DONE EITHER BY TRACING THE BOOT (WHICH 
  70. I HOPED TO AVOID) OR BY THE
  71. USE OF A MODIFIED MONITOR. TYPICALLY, T
  72. HE MONITOR IS MODIFIED SO THAT
  73. THE RESET VECTOR AT FFFC POINTS AT A ME
  74. MORY MOVE ROUTINE WHICH RELO- CATES PAGE
  75. S 0-8 SOMEWHERE OUT OF THE WAY.  THE MOD
  76. IFIED MONITOR CAN
  77. THEN BE INSTALLED IN A RAMCARD.  IT IS 
  78. GENERALLY NECESSARY TO PROTECT
  79. THE RAMCARD IN SOME WAY SO THAT THE PRO
  80. GRAM CANNOT ERASE IT OR TURN
  81. IT OFF (MY CARD HAS BEEN MODIFIED FOR T
  82. HIS PURPOSE, BUT I UNDERSTAND
  83. THAT IT IS POSSIBLE TO FOOL MANY PROGRA
  84. MS BY PUTTING THE CARD IN SLOT
  85. 1 INSTEAD OF 0). THERE ARE SEVERAL OF T
  86. HESE CRACKING MONITORS GOING
  87. AROUND, INCLUDING VERSIONS BY BOZO AND 
  88. LOCKBUSTER, AND A COMMERCIAL
  89. VERSION CALLED MASTERKEY+.     A MODEST
  90.  REFINEMENT OF THIS METHOD IS TO USE A N
  91. ONMASKABLE
  92. INTERRUPT (NMI) INSTEAD OF OF A RESET. 
  93.  TO GENERATE A NMI, YOU JUST
  94. ADD A SWITCH TO CONNECT PERIPHERAL PIN 
  95. #29 (ANY CARD) TO PIN #26 THRU
  96. A 100 OHM RESISTOR. WHEN THE 6502 SEES 
  97. A NMI, IT PUSHES THE STATUS
  98. REGISTER AND PROGRAM COUNTER ONTO THE S
  99. TACK, THEN JUMPS VIA $FFFA.
  100. THIS I'VE MODIFIED TO TO LEAD TO A ROUT
  101. INE (INSIDE THE MONITOR) WHICH
  102. MOVES PAGES 0-8 TO $2100.29FF, THEN JUM
  103. PS TO THE OLD MONITOR RESET
  104. ROUTINE.  AFTER GETTING INSIDE THE PROG
  105. RAM IN THIS WAY, I MANUALLY
  106. MOVED $9600.9CFF TO $2A00.30FF AND $9D0
  107. 0.BFFF TO $D000.F2FF ON THE
  108. RAMCARD, THUS CLEARING THE WAY FOR A SL
  109. AVE BOOT. I THEN SAVED ALL THE
  110. PIECES OF THE PROGRAM ONTO A NORMAL 3.3
  111.  DISK. AS A TEST, I WROTE A
  112. ROUTINE TO MOVE EVERYTHING BACK, RELOAD
  113.  THE REGISTERS, AND DO A RTI
  114. (RETURN FROM INTERRUPT). THE PROGRAM RE
  115. STARTED AS EXPECTED, THEN
  116. BOMBED OUT TRYING TO READ THE DISK. INS
  117. PECTION OF THE CODE REVEALED A
  118. FAIRLY STANDARD DOS IN THE USUAL PLACE.
  119.   IT SEEMED TO BE PATCHED
  120. RATHER THAT REASSEMBLED, SINCE I SAW SE
  121. VERAL ROUTINES WHICH I WAS
  122. FAIRLY CERTAIN THAT THE PROGRAM DIDN'T 
  123. NEED. RWTS WAS IN ITS USUAL
  124. HOME ($B800.BFFF). USING THE INSPECTOR 
  125. IN CONJUNCTION WITH SHEILA'S
  126. RWTS, I WAS NOW ABLE TO READ MOST OF TH
  127. E TRACKS ON THE ORIGINAL DISK,
  128. BUT I COULDN'T SEE ANYTHING RESEMBLING 
  129. A CATALOG. THIS SUGGESTED THAT
  130. THE PROGRAM WAS LOADING DATA FROM KNOWN
  131.  DISK LOCATIONS USING RWTS
  132. DIRECTLY.  TO TEST THIS HYPOTHESIS, I I
  133. NTERRUPTED WHILE THE PROGRAM
  134. WAS TRYING TO ACCESS THE DISK. AS EXPEC
  135. TED, EXAMINATION OF THE TOP OF
  136. THE STACK INDICATED THAT THE PROGRAM CO
  137. UNTER WAS IN RWTS.
  138.  
  139. STEP 3: CONVERT THE DATA TRACKS.
  140.    THERE WERE STILL THOSE DISK LOADS TO
  141.  CONTEND WITH.  POKING AROUND
  142. INSIDE SHEILA, I FOUND A SOMEWHAT MODIF
  143. IED RWTS WITH AN ENTRY AT THE
  144. USUAL LOCATION: $BD00. THEN I BOOTED A 
  145. 32K DOS 3.3 SLAVE (WHICH I HAD
  146. MADE BY PULLING OUT THE LAST ROW OF RAM
  147.  CHIPS, BOOTING A MASTER AND
  148. ITIT-ING A SLAVE).  NOW I HAD SHEILA RW
  149. TS AT $BD00, AND DOS 3.3 RWTS
  150. AT $7D00.  THEN I ENTERED THE INSPECTOR
  151. , AND SET THE RWTS VECTOR AT
  152. $3DC.3DE TO POINT TO $BD00. THEN I READ
  153.  IN SOME SECTORS OF SHEILA,
  154. SAVING THEM IN MEMORY (BEING CAREFUL NO
  155. T TO OVERWRITE EITHER RWTS).
  156. NEXT I SWITCHED TO RWTS VECTOR TO $B700
  157. , AND WROTE THE SECTORS I HAD
  158. READ TO THE CORRESPONDING TRACKS ON A D
  159. OS 3.3 DISK, UNTIL I HAD
  160. CONVERTED ALL THE TRACKS I COULD READ. 
  161.  I THEN REPEATED THE PROCESS
  162. WITH A 32K 3.2 RWTS, SO THAT WHEN I FIN
  163. ISHED I HAD BOTH A 3.3 AND A
  164. 3.2 DISK WITH THE DATA TRACKS FROM SHEI
  165. LA.
  166.  
  167. STEP 4:  CONVERT THE DOS.
  168.   THE NEXT STEP WAS TO MODIFY THE SHEIL
  169. A RWTS SO THAT IT WOULD READ
  170. FROM A NORMAL FORMAT DISK.  SINCE SHEIL
  171. A'S DOS SEEMED ALMOST 3.2, I
  172. DECIDED FIRST TO SEE IF I COULD GET IT 
  173. TO READ THE 3.2 DATA DISK.
  174. THIS WAS SURPRISINGLY EASY; I JUST PATC
  175. HED THE SECTOR HEADER IN THE
  176. READ PORTION OF SHEILA RWTS TO MATCH NO
  177. RMAL DOS 3.2 (D5 AA DD) AND IT
  178. WOULD HAPPILY READ DATA OFF THE 3.2 DIS
  179. K THAT I HAD MADE.
  180. UNFORTUNATELY, I WANTED 3.3.     MY FIR
  181. ST ATTEMPT AT CONVERSION TO 
  182. 3.3 WAS SIMPLY TO REPLACE THE ENTIRE RW
  183. TS FROM SHEILA WITH A NORMAL 3
  184. .3 RWTS. AT FIRST IT LOOKED
  185. GOOD; THE PROGRAM LOADED THE FIRST MAZE
  186.  FROM MY 3.3 DATA DISK.
  187. UNFORTUNATELY, THE MINUTE I HIT A KEY I
  188. T LOCKED UP.  A POSTMORTEM
  189. INDICATED THAT A KEYBOARD INPUT ROUTINE
  190.  ON PAGE 4 HAD MYSTERIOUSLY
  191. TURNED TO GARBAGE.  OUT CAME THE DOSSOU
  192. RCE LISTINGS.  SURE ENOUGH,RWTS STORES D
  193. ATA IN LOCATIONS $478, $4F8, $578, $5F8,
  194.  AND $6F8 (THESE
  195. ARE IN THE TEXT PAGE AREA, BUT THEY DO 
  196. NOT SHOW ON THE SCREEN).
  197. CLEARLY, IT WAS GOING TO BE NECESSARY T
  198. O MODIFY THE RWTS TO ELIMINATE
  199. THE CONFLICT. LOOKING THROUGH RWTS, I N
  200. OTICED THAT LOCATIONS BCE0 TO
  201. BCFF WERE APPARENTLY UNUSED BY BOTH THE
  202.  NORMAL 3.3 AND SHEILA RWTS.
  203. IT WAS A SIMPLE TASK TO EDIT THE DOSSOU
  204. RCE RWTS LISTING TO USE THIS
  205. AREA INSTEAD OF THE TEXT PAGE REGION. A
  206. T LONG-JOHN'S SUGGESTION, I
  207. ALSO MOVED THE SECTOR INTERLEAVING TABL
  208. E, NORMALLY AT BFB8.BFC7, TO
  209. RESIDE AT BCF0.BCFF, IN CASE SHEILA WAS
  210.  USING THAT AREA FOR SOMETHING
  211.  ELSE (3.2 RWTS DOESN'T HAVE A SECTOR I
  212. NTERLEAVING TABLE). I THEN
  213. REASSEMBLED RWTS USING LISA 2.5. RATHER
  214.  THAN COMPLETELY REPLACE
  215. SHEILA'S RWTS, I DECIDED TO MOVE IN ONL
  216. Y THE READ ROUTINES FROM MY
  217. REASSEMBLED RWTS, SINCE I KNEW SHEILA D
  218. IDN'T WRITE TO DISK.  THE AREAS SWITCHED
  219.  WERE AS FOLLOWS: B800.B8C1, BA29.BA95, 
  220. BB00.BCFF, AND
  221. BEAF.BFFF.  I THEN RESTARTED SHEILA, AN
  222. D VERIFIED THAT THE PROGRAM
  223. RAN CORRECTLY WITH THE 3.3 DATA DISK.
  224.  
  225. STEP 5: PUTTING IT ALL TOGETHER.
  226. THE FINAL TASK WAS TO GET SHEILA ONTO T
  227. HE DISK WITH THE DATA.  THERE
  228. WAS ONE PROBLEM; ONE OF THE DATA TRACKS
  229.  WAS $11, NORMAL LOCATION
  230. OF THE CATALOG AND VTOC.  CLEARLY IT WO
  231. ULD BE NECESSARY TO MODIFY
  232. EITHER SHEILA OR DOS TO ELIMINATE THE C
  233. ONFLICT.  TAKING THE PATH OF
  234. LEAST RESISTANCE, I ELECTED TO MODIFY D
  235. OS TO USE TRACK $15 INSTEAD OF
  236. $11. THIS MEANT THAT NORMAL DOS WOULD B
  237. E UNABLE TO FIND THE CATALOG,
  238. BUT IT WOULDN'T INTERFERE WITH COPYA, W
  239. HICH DOESN'T MAKE USE OF THE
  240. CATALOG. TO DO THIS, I CHANGED LOCATION
  241.  $AC01 IN DOS FROM $11 TO $15,
  242. THEN INITIALIZED A DISK.  THIS PLACED T
  243. HE VTOC ON TRACK $15. THEN,
  244. USING THE INSPECTOR, I CHANGED TRACK $1
  245. 5, SECTOR $0, BYTE $1 FROM $11
  246. TO $15, SO THAT DOS WOULD KNOW TO USE T
  247. RACK $15 FOR THE CATALOG.
  248. THEN, I COPIED THE DATA TRACKS FROM MY 
  249. SHEILA 3.3 DATA DISK ONTO THE
  250. NEW DISK, AND CHANGED THE SECTOR-USE BI
  251. TMAP TO PROTECT THE DATA
  252. SECTORS AND THE CATALOG. I THEN ASSEMBL
  253. ED ALL OF THE PIECES OF SHEILA
  254. INTO A SINGLE FILE, AND PREFACED IT WIT
  255. H A MEMORY MOVE TO PUT
  256. EVERYTHING BACK WHERE IT BELONGED. FINA
  257. LLY, I BOOTED THE DATA DISK
  258. (WITH CATALOG ON TRACK $15) AND BSAVED 
  259. SHEILA. THIS COMPLETED THE
  260. CONVERSION OF SHEILA TO COPYA FORMAT.
  261.